#pragma once

#include <random>

namespace Random
{
	void Seed(int seed);
	void Seed(bool isTimeBase = true);	
	//! Returns a random value in the range [0 .. RAND_MAX].
	sint RandInt();
	//! Returns a random value in the range [0 .. Max]. This value can also be negative.
	sint RandInt(const sint Max);
	//! Returns a random value in the range [Min .. Max]. These values can also be negative.
	sint RandInt(const sint Min, const sint Max);

	//! Returns true if the specified probability occurs. This is equivalent to "randInt(Probability) == 0".
	bool RandBool(const uint Probability);

	//! Returns a random value in the range [0.0 .. 1.0].
	float RandFloat();
	//! Returns a floating point random value in the range [0.0 .. Max].
	float RandFloat(const float Max);
	//! Returns a floating point random value in the range [Min .. Max].
	float RandFloat(const float Min, const float Max);
} // namespace Random